using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using NEX_Datos;
using MySql.Data.MySqlClient;

namespace NEXServicio
{
    public class ServicioEventoCultural : ServicioPadre
    {
        #region Contantes

        public const String DataTableName = "EventoCultural";

        #endregion

        #region Metodos publicos

        public static DataSet Obtener(int idEvento)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "EventoCulturalTraer";
                SetearConNulo("p_idEvento", cmd, MySqlDbType.Int32, idEvento);
                SeteaValorNulo("p_fechaDesde", cmd, MySqlDbType.DateTime);
                SeteaValorNulo("p_fechaHasta", cmd, MySqlDbType.DateTime);
                SeteaValorNulo("p_activo", cmd, MySqlDbType.Bit);

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
                cmd.Connection.Close();
            }
            ds.Tables[0].TableName = ServicioEventoCultural.DataTableName;

            return ds;
        }

        public static DataSet Listar(Boolean activo, DateTime fechaDesde, DateTime fechaHasta)
        {
            return ServicioEventoCultural.ListarPrivado(activo, fechaDesde,fechaHasta);
        }

        #endregion

        #region Metodos privados
        private static DataSet ListarPrivado(Boolean activo, DateTime fechaDesde, DateTime fechaHasta)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "EventoCulturalTraer";
                SeteaValorNulo("p_idEvento", cmd, MySqlDbType.Int32);
                SetearConNulo("p_fechaDesde", cmd, MySqlDbType.DateTime, fechaDesde);
                SetearConNulo("p_fechaHasta", cmd, MySqlDbType.DateTime, fechaHasta);
                SetearConNulo("p_activo", cmd, MySqlDbType.Bit, activo);

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
                cmd.Connection.Close();
            }
            ds.Tables[0].TableName = ServicioEventoCultural.DataTableName;
            return ds;
        }
        #endregion

        #region Metodos para Salvar
        public static int Salvar(Transaccion transaccion, int idEvento, string titulo, DateTime fechaDesde, DateTime fechaHasta, 
                                string descripcion, string detalle, bool activo, bool esAlta)
        {
            if (transaccion == null)
            {
                throw new ArgumentNullException("transaccion");
            }
            using (MySqlCommand cmd = transaccion.SqlCommandObtener())
            {
                cmd.CommandText = "EventoCulturalSalvar";

                cmd.Parameters.Add("p_idEvento", MySqlDbType.Int32).Value = idEvento;
                cmd.Parameters["p_idEvento"].Direction = ParameterDirection.InputOutput;
                cmd.Parameters.Add("p_titulo", MySqlDbType.VarChar).Value = titulo;
                cmd.Parameters.Add("p_fechaDesde", MySqlDbType.DateTime).Value = fechaDesde;
                cmd.Parameters.Add("p_fechaHasta", MySqlDbType.DateTime).Value = fechaHasta;
                cmd.Parameters.Add("p_descripcion", MySqlDbType.VarChar).Value = descripcion;
                cmd.Parameters.Add("p_detalle", MySqlDbType.VarChar).Value = descripcion;
                cmd.Parameters.Add("p_activo", MySqlDbType.Bit).Value = activo;
                cmd.Parameters.Add("p_esAlta", MySqlDbType.Bit).Value = esAlta;

                cmd.ExecuteNonQuery();
                return (Int32)cmd.Parameters["p_idEvento"].Value;
            }
        }
        #endregion
    }
}
